Verwenden von Haltepunkten
Haltepunkte (Breakpoints) werden üblicherweise zur Fehlersuche im Programm genutzt. CODESYS unterstützt Haltepunkte in allen IEC-Editoren.
Sie können Haltepunkte an bestimmten Positionen im Programm setzen, um dort einen Ausführungsstopp zu erzwingen und die Variablenwerte zu beobachten. Sie können spezielle „Datenhaltepunkte“ setzen, um die Programmausführung anzuhalten, wenn sich der Wert einer bestimmten Variablen ändert.
Der Stopp am Haltepunkt oder Datenhaltepunkt kann an zusätzliche Bedingungen geknüpft werden. Sie können Haltepunkte und Datenhaltepunkte auch zu „Ausführungspunkten“ umdefinieren, an denen das Programm nicht stoppt, sondern bestimmter Code abgearbeitet wird.
Tipp
Die Ansicht Haltepunkte gibt eine Übersicht über alle definierten Haltepunkte. Darin stehen Ihnen zusätzliche Befehle zum gleichzeitigen Ändern mehrerer Haltepunkte zur Verfügung.
Im Editor wird der Status von Haltepunkten und Ausführungspunkten mit folgenden Symbolen markiert:
: Der Haltepunkt ist aktiviert.
: Der Haltepunkt ist deaktiviert.
: Der Haltepunkt ist in einer anderen Instanz des gerade im Editor geöffneten Bausteins gesetzt.
: Das Programm hält am Haltepunkt an.
: Der Haltepunkt mit Bedingung ist aktiviert.
: Der Haltepunkt mit Bedingung ist deaktiviert.
: Der Ausführungspunkt ist aktiviert.
: Der Ausführungspunkt ist deaktiviert.
: Der Ausführungspunkt mit Bedingung ist aktiviert.
: Der Ausführungspunkt mit Bedingung ist deaktiviert.
: Der Datenhaltepunkt ist aktiviert.
: Der Datenhaltepunkt ist deaktiviert.
: Das Programm hält am Datenhaltepunkt an.
: Der Datenausführungspunkt ist aktiviert.
: Der Datenausführungspunkt ist deaktiviert.
: Das Programm hält am Datenausführungspunkt an.
: Der Datenausführungspunkt mit Bedingung ist aktiviert.
: Der Datenhaltepunkt mit Bedingung ist aktiviert.
Für weitere Informationen siehe: Haltepunkte
Datenhaltepunkte
Tipp
Die Funktion der Datenhaltepunkte ist vom Zielsystem abhängig. Aktuell sind Datenhaltepunkte nur mit der CODESYS Control Win möglich.
An einem Datenhaltepunkt hält die Programmabarbeitung an, wenn sich der Wert einer bestimmten Variablen oder Speicheradresse ändert. Wie bei „normalen“ Haltepunkten kann der Stopp an eine zusätzliche Bedingung geknüpft werden, oder kann statt des Stopps bestimmter Code abgearbeitet werden (Umwandlung in einen Datenausführungspunkt).
Sie setzen einen Datenhaltepunkt mit dem Befehl Neuer Datenhaltepunkt entweder aus dem Menü Debug, oder in der Ansicht Haltepunkte über die Schaltfläche Neu. Sie geben dabei einen qualifizierten Variablennamen oder direkt eine Speicheradresse an, die auf Änderung ihres Werts überwacht werden soll.
Im folgenden Beispielcode wird der Speicherplatz von Variable iNumber
ungewollt überschrieben. Mit einem Datenhaltepunkt auf der Variablen iNumber
wird jedoch bemerkt, wenn sich ihr Wert ändert. Die Abarbeitung bleibt dann mit einer entsprechenden Meldung bei dem Arrayzugriff stehen, welcher den Variablenwert überschreibt: Idx
= 7
.
Sehen Sie dazu auch weiter unten: „Setzen eines Datenhaltepunkts“
PROGRAM PLC_PRG VAR Idx : INT; Ary : ARRAY[0..3] OF BYTE; iNumber : INT := 55; END_VAR FOR idx := 0 TO 6 DO Ary[idx] := 0; END_FOR
Haltepunkte in Applikationen mit mehreren Tasks
Grundsätzlich gilt: Debugging ist nicht auf mehreren Tasks gleichzeitig möglich. Solange Sie auf einer Task mit Haltepunkten oder schrittweiser Abarbeitung arbeiten, werden Haltepunkte in anderen Tasks ignoriert.
Wenn ein Baustein, in dem ein Haltepunkt gesetzt ist, von mehreren Tasks verwendet wird, dann wird nur die Task („Debug-Task“) angehalten, die zuerst auf den Haltepunkt trifft. Alle anderen Tasks laufen weiter. Im Dialog Aufrufliste sehen Sie, welche Task gerade angehalten wird.
Wenn Sie wollen, dass nur eine bestimmte Task von einem Haltepunkt betroffen sein soll, können Sie dies in den Haltepunkteigenschaften festlegen.
Haltepunkte funktionieren für jede Applikation separat, so dass ein „Halt auf BP“ keine andere Applikation betrifft. Dies gilt auch für Vater/Kind-Applikationen, sogar wenn der Haltepunkt in einem Baustein gesetzt ist, der von mehreren Applikationen verwendet wird und dessen Code nur einmal auf der SPS liegt.
Wichtig
Die E/As, die von der „Debug-Task“ bedient werden, werden bei einem Stop im Haltepunkt nicht aktualisiert, auch wenn Sie die Option E/As aktualisieren im Stop in den SPS-Einstellungen aktiviert haben.
Tipp
Wenn die Applikation auf der SPS an einem Haltepunkt steht, erzeugt ein Online Change oder Download ein Stoppen aller Tasks, was ein Stop der SPS bedeutet! In diesem Fall zeigt CODESYS eine entsprechende Meldung an und Sie können entscheiden, ob Sie mit dem Login fortfahren wollen oder nicht.
Setzen eines einfachen Haltepunkts (Beispiel ST-Editor)
Voraussetzung: Die Applikation ist im Onlinebetrieb und läuft. Der Operating Mode ist Debug.
Öffnen Sie eine POU in der Sprache ST im Editor.
Setzen Sie den Cursor in die Zeile, in der ein Haltepunkt gesetzt werden soll.
Wählen Sie den Befehl F9.
oder drücken Sie die TasteDie Zeile wird rot markiert und mit dem Icon
(Haltepunkt aktiviert) gekennzeichnet. Wenn das Programm an dem Haltepunkt steht, wird die Zeile mit dem Icon
(Stop an Haltepunkt) gekennzeichnet. Die Abarbeitung des Programms stoppt. Dies wird in der Statuszeile mit dem rot hinterlegten Status
HALT AUF BP
signalisiert.Wählen Sie den Befehl F5.
oder drücken Sie die TasteDas Programm läuft weiter.
Setzen Sie weitere Haltepunkte und überprüfen Sie an den Haltepositionen die Werte von Variablen.
Setzen Sie den Cursor in eine Zeile, in der ein Haltepunkt gelöscht werden soll.
Wählen Sie den Befehl F9.
oder drücken Sie die TasteDie Markierung verschwindet. Der Haltepunkt ist gelöscht.
Festlegen einer Haltepunkt-Bedingung (Beispiel ST-Editor)
Öffnen Sie eine POU in der Sprache ST im Editor.
Setzen Sie den Cursor in die Zeile, in der ein Haltepunkt gesetzt werden soll.
Wählen Sie den Befehl
.Es öffnet sich der Dialog Neuer Haltepunkt.
Wählen Sie die Registerkarte Bedingung.
Wählen Sie im Abschnitt Trefferzahl die Option Anhalten, wenn die Trefferzahl ein Vielfaches ist von.
Geben Sie im Feld rechts daneben den Wert 5 ein.
Definieren Sie zusätzlich noch eine boolesche Bedingung, wann der Haltepunkt aktiv sein soll. Aktivieren Sie dazu die Option Halt, wenn True. Geben Sie im Feld rechts daneben eine boolesche Variable ein.
Aktivieren Sie die Option Haltepunkt sofort aktivieren.
Schließen Sie den Dialog.
Die Zeile wird rot markiert und mit dem Icon
gekennzeichnet.
Beobachten Sie nun das laufende Programm. Solange die boolesche Variable für die Bedingung FALSE
ist, ist die Bedingung für den Haltepunkt nicht erfüllt und das Programm läuft. Wenn Sie die Variable auf TRUE
setzen, ist die Bedingung erfüllt und das Programm bleibt bei jedem 5. Durchlauf an diesem Haltepunkte stehen.
Festlegen eines Ausführungspunkts (Beispiel ST-Editor)
Öffnen Sie eine POU in der Sprache ST im Editor.
Setzen Sie den Cursor in die Zeile, in der ein Ausführungspunkt gesetzt werden soll.
Wählen Sie den Befehl
.Es öffnet sich der Dialog Neuer Haltepunkt.
Wählen Sie die Registerkarte Ausführungspunkt Einstellungen.
Aktivieren Sie die Option Ausführungspunkt.
Geben Sie im Feld Folgenden Code ausführen folgende Anweisung ein:
iCounter := iCounter + 1;
Geben Sie im Feld Meldung im Geräte-Log ausgeben folgenden Text ein:
Ausführungspunkt erreicht {iCounter}
Schließen Sie den Dialog.
Wenn das Programm den Ausführungspunkt erreicht, bleibt es nicht stehen, sondern es wird der oben definierte Code ausgeführt. Zusätzlich wird eine Meldung im Geräte-Log ausgegeben.
Setzen eines Datenhaltepunkts
Voraussetzung: Die Applikation ist im Onlinebetrieb und läuft.
Wählen Sie den Befehl
.Wählen Sie den Befehl
.Klicken Sie im Dialog Neuer Haltepunkt in der Registerkarte Daten auf die Schaltfläche
.
Wählen Sie im Dialog Eingabehilfe in der Registerkarte Watch-Variablen die Variable aus, bei deren Wertänderung das Programm anhalten soll.
Alternativ geben Sie in der Registerkarte Daten in die Eingabezeile direkt den qualifizierten Namen der Variablen ein. Beispiel:
PLC_PRG.iNumber
. Die genaue Anzahl der zu überwachenden Bytes wird als Größe angegeben. Automatisch ist hier ein dem Datentyp entsprechender Wert vorgegeben, Sie können aber auch weniger Bytes überwachen lassen.Selektieren Sie in der Ansicht Haltepunkte die Zeile mit dem Datenhaltepunkt und klicken Sie auf die Schaltfläche
.
Die Zeile wird markiert und mit dem Icon
(Datenhaltepunkt aktiviert) gekennzeichnet. Wenn das Programm den Datenhaltepunkt erreicht, das heißt, wenn sich der Wert der ausgewählten Variablen ändert, stoppt die Abarbeitung des Programms. Im Implementierungsteil des Bausteins wird die Folgezeile mit einem Pfeil
gekennzeichnet. Dies wird in der Statuszeile mit dem rot hinterlegten Status
HALT AUF BP
signalisiert.Wählen Sie den Befehl F5.
oder drücken Sie die TasteDas Programm läuft weiter und bleibt dann wieder stehen, wenn sich der Wert der Variablen erneut ändert.